home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.plaf.basic;
-
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Insets;
- import java.awt.LayoutManager;
- import java.awt.Rectangle;
- import java.beans.PropertyChangeListener;
- import javax.swing.JButton;
- import javax.swing.JComponent;
- import javax.swing.JScrollBar;
- import javax.swing.LookAndFeel;
- import javax.swing.SwingConstants;
- import javax.swing.Timer;
- import javax.swing.UIManager;
- import javax.swing.plaf.ComponentUI;
- import javax.swing.plaf.ScrollBarUI;
-
- public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager, SwingConstants {
- protected Dimension minimumThumbSize;
- protected Dimension maximumThumbSize;
- protected Color thumbHighlightColor;
- protected Color thumbLightShadowColor;
- protected Color thumbDarkShadowColor;
- protected Color thumbColor;
- protected Color trackColor;
- protected Color trackHighlightColor;
- protected JScrollBar scrollbar;
- protected JButton incrButton;
- protected JButton decrButton;
- protected boolean isDragging;
- protected TrackListener trackListener;
- protected ArrowButtonListener buttonListener;
- protected ModelListener modelListener;
- protected Rectangle thumbRect;
- protected Rectangle trackRect;
- protected int trackHighlight;
- protected static final int NO_HIGHLIGHT = 0;
- protected static final int DECREASE_HIGHLIGHT = 1;
- protected static final int INCREASE_HIGHLIGHT = 2;
- protected ScrollListener scrollListener;
- protected PropertyChangeListener propertyChangeListener;
- protected Timer scrollTimer;
- private static final int scrollSpeedThrottle = 60;
-
- public void addLayoutComponent(String var1, Component var2) {
- }
-
- protected void configureScrollBarColors() {
- this.thumbHighlightColor = UIManager.getColor("ScrollBar.thumbHighlight");
- this.thumbLightShadowColor = UIManager.getColor("ScrollBar.thumbLightShadow");
- this.thumbDarkShadowColor = UIManager.getColor("ScrollBar.thumbDarkShadow");
- this.thumbColor = UIManager.getColor("ScrollBar.thumb");
- this.trackColor = UIManager.getColor("ScrollBar.track");
- this.trackHighlightColor = UIManager.getColor("ScrollBar.trackHighlight");
- }
-
- protected ArrowButtonListener createArrowButtonListener() {
- return new ArrowButtonListener(this);
- }
-
- protected JButton createDecreaseButton(int var1) {
- return new BasicArrowButton(var1);
- }
-
- protected JButton createIncreaseButton(int var1) {
- return new BasicArrowButton(var1);
- }
-
- protected ModelListener createModelListener() {
- return new ModelListener(this);
- }
-
- protected PropertyChangeListener createPropertyChangeListener() {
- return new PropertyChangeHandler(this);
- }
-
- protected ScrollListener createScrollListener() {
- return new ScrollListener(this);
- }
-
- protected TrackListener createTrackListener() {
- return new TrackListener(this);
- }
-
- public static ComponentUI createUI(JComponent var0) {
- return new BasicScrollBarUI();
- }
-
- public Dimension getMaximumSize(JComponent var1) {
- return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
- }
-
- protected Dimension getMaximumThumbSize() {
- return this.maximumThumbSize;
- }
-
- public Dimension getMinimumSize(JComponent var1) {
- return this.getPreferredSize(var1);
- }
-
- protected Dimension getMinimumThumbSize() {
- return this.minimumThumbSize;
- }
-
- public Dimension getPreferredSize(JComponent var1) {
- return this.scrollbar.getOrientation() == 1 ? new Dimension(16, 48) : new Dimension(48, 16);
- }
-
- protected Rectangle getThumbBounds() {
- return this.thumbRect;
- }
-
- protected Rectangle getTrackBounds() {
- return this.trackRect;
- }
-
- protected void installComponents() {
- }
-
- protected void installDefaults() {
- this.minimumThumbSize = (Dimension)UIManager.get("ScrollBar.minimumThumbSize");
- this.maximumThumbSize = (Dimension)UIManager.get("ScrollBar.maximumThumbSize");
- this.trackHighlight = 0;
- switch (this.scrollbar.getOrientation()) {
- case 0:
- this.incrButton = this.createIncreaseButton(3);
- this.decrButton = this.createDecreaseButton(7);
- break;
- case 1:
- this.incrButton = this.createIncreaseButton(5);
- this.decrButton = this.createDecreaseButton(1);
- }
-
- this.scrollbar.setLayout(this);
- this.scrollbar.add(this.incrButton);
- this.scrollbar.add(this.decrButton);
- this.scrollbar.setEnabled(this.scrollbar.isEnabled());
- this.scrollbar.setOpaque(true);
- this.configureScrollBarColors();
- LookAndFeel.installBorder(this.scrollbar, "ScrollBar.border");
- }
-
- protected void installKeyboardActions() {
- }
-
- protected void installListeners() {
- this.trackListener = this.createTrackListener();
- this.buttonListener = this.createArrowButtonListener();
- this.modelListener = this.createModelListener();
- this.propertyChangeListener = this.createPropertyChangeListener();
- this.scrollbar.addMouseListener(this.trackListener);
- this.scrollbar.addMouseMotionListener(this.trackListener);
- this.scrollbar.getModel().addChangeListener(this.modelListener);
- this.scrollbar.addPropertyChangeListener(this.propertyChangeListener);
- if (this.incrButton != null) {
- this.incrButton.addMouseListener(this.buttonListener);
- }
-
- if (this.decrButton != null) {
- this.decrButton.addMouseListener(this.buttonListener);
- }
-
- this.scrollListener = this.createScrollListener();
- this.scrollTimer = new Timer(60, this.scrollListener);
- this.scrollTimer.setInitialDelay(300);
- }
-
- public void installUI(JComponent var1) {
- this.scrollbar = (JScrollBar)var1;
- this.thumbRect = new Rectangle(0, 0, 0, 0);
- this.trackRect = new Rectangle(0, 0, 0, 0);
- this.installDefaults();
- this.installComponents();
- this.installListeners();
- this.installKeyboardActions();
- }
-
- public void layoutContainer(Container var1) {
- if (!this.isDragging) {
- JScrollBar var2 = (JScrollBar)var1;
- switch (var2.getOrientation()) {
- case 0:
- this.layoutHScrollbar(var2);
- break;
- case 1:
- this.layoutVScrollbar(var2);
- }
-
- }
- }
-
- protected void layoutHScrollbar(JScrollBar var1) {
- Dimension var2 = ((Component)var1).getSize();
- Insets var3 = ((JComponent)var1).getInsets();
- int var4 = var2.height - (var3.top + var3.bottom);
- int var5 = var3.top;
- int var6 = this.decrButton.getPreferredSize().width;
- int var7 = var3.left;
- int var8 = this.incrButton.getPreferredSize().width;
- int var9 = var2.width - (var3.right + var8);
- int var10 = var3.left + var3.right;
- int var11 = var6 + var8;
- float var12 = (float)(var2.width - (var10 + var11));
- float var13 = (float)var1.getMinimum();
- float var14 = (float)var1.getVisibleAmount();
- float var15 = (float)var1.getMaximum() - var13;
- float var16 = (float)var1.getValue();
- int var17 = var15 <= 0.0F ? this.getMaximumThumbSize().width : (int)(var12 * (var14 / var15));
- var17 = Math.max(var17, this.getMinimumThumbSize().width);
- var17 = Math.min(var17, this.getMaximumThumbSize().width);
- int var18 = var9 - var17;
- if (var1.getValue() < var1.getMaximum() - var1.getVisibleAmount()) {
- float var19 = var12 - (float)var17;
- var18 = (int)(0.5F + var19 * ((var16 - var13) / (var15 - var14)));
- var18 += var7 + var6;
- }
-
- int var25 = var2.width - var10;
- if (var25 < var11) {
- var8 = var6 = var25 / 2;
- var9 = var2.width - (var3.right + var8);
- }
-
- this.decrButton.setBounds(var7, var5, var6, var4);
- this.incrButton.setBounds(var9, var5, var8, var4);
- int var20 = var7 + var6;
- int var21 = var9 - var20;
- this.trackRect.setBounds(var20, var5, var21, var4);
- if (var17 >= (int)var12) {
- this.setThumbBounds(0, 0, 0, 0);
- } else {
- if (var18 + var17 > var9) {
- var18 = var9 - var17;
- }
-
- if (var18 < var7 + var6) {
- var18 = var7 + var6 + 1;
- }
-
- this.setThumbBounds(var18, var5, var17, var4);
- }
-
- }
-
- protected void layoutVScrollbar(JScrollBar var1) {
- Dimension var2 = ((Component)var1).getSize();
- Insets var3 = ((JComponent)var1).getInsets();
- int var4 = var2.width - (var3.left + var3.right);
- int var5 = var3.left;
- int var6 = this.decrButton.getPreferredSize().height;
- int var7 = var3.top;
- int var8 = this.incrButton.getPreferredSize().height;
- int var9 = var2.height - (var3.bottom + var8);
- int var10 = var3.top + var3.bottom;
- int var11 = var6 + var8;
- float var12 = (float)(var2.height - (var10 + var11));
- float var13 = (float)var1.getMinimum();
- float var14 = (float)var1.getVisibleAmount();
- float var15 = (float)var1.getMaximum() - var13;
- float var16 = (float)var1.getValue();
- int var17 = var15 <= 0.0F ? this.getMaximumThumbSize().height : (int)(var12 * (var14 / var15));
- var17 = Math.max(var17, this.getMinimumThumbSize().height);
- var17 = Math.min(var17, this.getMaximumThumbSize().height);
- int var18 = var9 - var17;
- if (var1.getValue() < var1.getMaximum() - var1.getVisibleAmount()) {
- float var19 = var12 - (float)var17;
- var18 = (int)(0.5F + var19 * ((var16 - var13) / (var15 - var14)));
- var18 += var7 + var6;
- }
-
- int var25 = var2.height - var10;
- if (var25 < var11) {
- var8 = var6 = var25 / 2;
- var9 = var2.height - (var3.bottom + var8);
- }
-
- this.decrButton.setBounds(var5, var7, var4, var6);
- this.incrButton.setBounds(var5, var9, var4, var8);
- int var20 = var7 + var6;
- int var21 = var9 - var20;
- this.trackRect.setBounds(var5, var20, var4, var21);
- if (var17 >= (int)var12) {
- this.setThumbBounds(0, 0, 0, 0);
- } else {
- if (var18 + var17 > var9) {
- var18 = var9 - var17;
- }
-
- if (var18 < var7 + var6) {
- var18 = var7 + var6 + 1;
- }
-
- this.setThumbBounds(var5, var18, var4, var17);
- }
-
- }
-
- public Dimension minimumLayoutSize(Container var1) {
- return this.getMinimumSize((JComponent)var1);
- }
-
- public void paint(Graphics var1, JComponent var2) {
- this.paintTrack(var1, var2, this.getTrackBounds());
- this.paintThumb(var1, var2, this.getThumbBounds());
- }
-
- protected void paintDecreaseHighlight(Graphics var1) {
- Insets var2 = this.scrollbar.getInsets();
- Rectangle var3 = this.getThumbBounds();
- var1.setColor(this.trackHighlightColor);
- if (this.scrollbar.getOrientation() == 1) {
- int var4 = var2.left;
- int var5 = this.decrButton.getY() + this.decrButton.getHeight();
- int var6 = this.scrollbar.getWidth() - (var2.left + var2.right);
- int var7 = var3.y - var5;
- var1.fillRect(var4, var5, var6, var7);
- } else {
- int var8 = this.decrButton.getX() + this.decrButton.getHeight();
- int var9 = var2.top;
- int var10 = var3.x - var8;
- int var11 = this.scrollbar.getHeight() - (var2.top + var2.bottom);
- var1.fillRect(var8, var9, var10, var11);
- }
-
- }
-
- protected void paintIncreaseHighlight(Graphics var1) {
- Insets var2 = this.scrollbar.getInsets();
- Rectangle var3 = this.getThumbBounds();
- var1.setColor(this.trackHighlightColor);
- if (this.scrollbar.getOrientation() == 1) {
- int var4 = var2.left;
- int var5 = var3.y + var3.height;
- int var6 = this.scrollbar.getWidth() - (var2.left + var2.right);
- int var7 = this.incrButton.getY() - var5;
- var1.fillRect(var4, var5, var6, var7);
- } else {
- int var8 = var3.x + var3.width;
- int var9 = var2.top;
- int var10 = this.incrButton.getX() - var8;
- int var11 = this.scrollbar.getHeight() - (var2.top + var2.bottom);
- var1.fillRect(var8, var9, var10, var11);
- }
-
- }
-
- protected void paintThumb(Graphics var1, JComponent var2, Rectangle var3) {
- if (!var3.isEmpty() && this.scrollbar.isEnabled()) {
- int var4 = var3.width;
- int var5 = var3.height;
- var1.translate(var3.x, var3.y);
- var1.setColor(this.thumbDarkShadowColor);
- var1.drawRect(0, 0, var4 - 1, var5 - 1);
- var1.setColor(this.thumbColor);
- var1.fillRect(0, 0, var4 - 1, var5 - 1);
- var1.setColor(this.thumbHighlightColor);
- var1.drawLine(1, 1, 1, var5 - 2);
- var1.drawLine(2, 1, var4 - 3, 1);
- var1.setColor(this.thumbLightShadowColor);
- var1.drawLine(2, var5 - 2, var4 - 2, var5 - 2);
- var1.drawLine(var4 - 2, 1, var4 - 2, var5 - 3);
- var1.translate(-var3.x, -var3.y);
- }
- }
-
- protected void paintTrack(Graphics var1, JComponent var2, Rectangle var3) {
- var1.setColor(this.trackColor);
- var1.fillRect(var3.x, var3.y, var3.width, var3.height);
- if (this.trackHighlight == 1) {
- this.paintDecreaseHighlight(var1);
- } else if (this.trackHighlight == 2) {
- this.paintIncreaseHighlight(var1);
- }
-
- }
-
- public Dimension preferredLayoutSize(Container var1) {
- return this.getPreferredSize((JComponent)var1);
- }
-
- public void removeLayoutComponent(Component var1) {
- }
-
- protected void scrollByBlock(int var1) {
- JScrollBar var2 = this.scrollbar;
- synchronized(var2){}
-
- try {
- int var4 = this.scrollbar.getValue();
- int var5 = this.scrollbar.getBlockIncrement(var1);
- int var6 = var5 * (var1 > 0 ? 1 : -1);
- this.scrollbar.setValue(var4 + var6);
- this.trackHighlight = var1 > 0 ? 2 : 1;
- Rectangle var7 = this.getTrackBounds();
- this.scrollbar.repaint(var7.x, var7.y, var7.width, var7.height);
- } catch (Throwable var9) {
- throw var9;
- }
-
- }
-
- protected void scrollByUnit(int var1) {
- JScrollBar var2 = this.scrollbar;
- synchronized(var2){}
-
- try {
- int var4;
- if (var1 > 0) {
- var4 = this.scrollbar.getUnitIncrement(var1);
- } else {
- var4 = -this.scrollbar.getUnitIncrement(var1);
- }
-
- this.scrollbar.setValue(var4 + this.scrollbar.getValue());
- } catch (Throwable var6) {
- throw var6;
- }
-
- }
-
- protected void setThumbBounds(int var1, int var2, int var3, int var4) {
- if (this.thumbRect.x != var1 || this.thumbRect.y != var2 || this.thumbRect.width != var3 || this.thumbRect.height != var4) {
- int var5 = Math.min(var1, this.thumbRect.x);
- int var6 = Math.min(var2, this.thumbRect.y);
- int var7 = Math.max(var1 + var3, this.thumbRect.x + this.thumbRect.width);
- int var8 = Math.max(var2 + var4, this.thumbRect.y + this.thumbRect.height);
- this.thumbRect.setBounds(var1, var2, var3, var4);
- this.scrollbar.repaint(var5, var6, var7 - var5, var8 - var6);
- }
- }
-
- protected void uninstallComponents() {
- }
-
- protected void uninstallDefaults() {
- LookAndFeel.uninstallBorder(this.scrollbar);
- }
-
- protected void uninstallKeyboardActions() {
- }
-
- protected void uninstallListeners() {
- this.scrollTimer.stop();
- this.scrollTimer = null;
- if (this.decrButton != null) {
- this.decrButton.removeMouseListener(this.buttonListener);
- }
-
- if (this.incrButton != null) {
- this.incrButton.removeMouseListener(this.buttonListener);
- }
-
- this.scrollbar.getModel().removeChangeListener(this.modelListener);
- this.scrollbar.removeMouseListener(this.trackListener);
- this.scrollbar.removeMouseMotionListener(this.trackListener);
- this.scrollbar.removePropertyChangeListener(this.propertyChangeListener);
- }
-
- public void uninstallUI(JComponent var1) {
- this.scrollbar = (JScrollBar)var1;
- this.uninstallDefaults();
- this.uninstallComponents();
- this.uninstallListeners();
- this.uninstallKeyboardActions();
- ((Container)var1).remove(this.incrButton);
- ((Container)var1).remove(this.decrButton);
- ((Container)var1).setLayout((LayoutManager)null);
- this.thumbRect = null;
- this.scrollbar = null;
- this.incrButton = null;
- this.decrButton = null;
- }
- }
-